"""
校验多个字符，都是跟量词相关：
    1：*：表示0次或多次
    2：+：表示1次或多次
    3：?：表示0次或1次
    4：{n}：表示n次
    5：{n,}：表示n次或更多次
    6：{n,m}：表示n到m次
"""
import re

# 案例1：演示正则表达式，校验多个字符
# 验证 *
"""
re.match(r'\d*it', '123it') - 匹配成功，因为"123it"以零个或多个数字开头后跟"it"
re.match(r'\d*it', 'it')   -  匹配成功，因为"it"符合模式（零个数字后跟"it"）
re.match(r'\d*it', 'ait') -   匹配失败，因为"a"不是数字，不满足\d*后直接跟"it"的要求
"""
result = re.match(r'\d*it', '123it')  # Y
result2 = re.match(r'\d*it', 'it')    # Y
result3 = re.match(r'\d*it', 'ait')   # N

# 验证 +
"""
这段代码使用正则表达式匹配函数re.match()来测试字符串是否以"数字+it"的模式开头：
result4：匹配成功，因为'123it'以数字123开头后跟'it'
result5：匹配失败，因为'it'前面没有数字
result6：匹配失败，因为'ait'中的'a'不是数字
\d+表示匹配一个或多个数字，re.match()只匹配字符串开头。
"""
result4 = re.match(r'\d+it', '123it')   # Y
result5 = re.match(r'\d+it', 'it')      # N
result6 = re.match(r'\d+it', 'ait')     # N

# 验证 ?
"""
re.match(r'\d?it', '123it') - 匹配失败，因为\d?表示0次或1次，而不是1次或多次
re.match(r'\d?it', 'it')   - 匹配成功，因为"it"符合模式（0个数字后跟"it"）
re.match(r'\d?it', 'ait') - 匹配失败，因为"a"不是数字，不满足\d?后直接跟"it"的要求
"""
result7 = re.match(r'\d?it', '123it')   # N
result8 = re.match(r'\d?it', 'it')      # Y
result9 = re.match(r'\d?it', 'ait')     # N

# 验证 {n}
result10 = re.match(r'\d{3}it', '123it')    # Y
result11 = re.match(r'\d{3}it', '1234it')   # N
result12 = re.match(r'\d{3}it', 'abcit')    # N

# 验证 {n,}
result13 = re.match(r'\d{3,}it', '123it')   # Y
result14 = re.match(r'\d{3,}it', '1234it')  # Y
result15 = re.match(r'\d{3,}it', '12345it') # Y

# 验证 {n,m}
result16 = re.match(r'\d{3,5}it', '123it')   # Y
result17 = re.match(r'\d{3,5}it', '1234it')  # Y
result18 = re.match(r'\d{3,5}it', '12345it') # Y

# 如果匹配失败，result就是None，反之是一个Match对象
if result18 != None:
    print(f'匹配成功，匹配的内容是：{result18.group()}')
else:
    print('匹配失败')